package main
import (
	"fmt"
	"os"
	"bufio"
	_"io"
)
//写文件的基本操作!
//os包下的OpenFile(name string,flag int,perm FileMode)(file *File, err error) //FileMode只作用在Linux或者Unix，指定权限控制
func main(){
	//创建新文件；使用带缓存的Writer写入五句话
	file,err := os.OpenFile("d:/uploadfiles/write.txt",os.O_WRONLY | os.O_CREATE,0666)
	if err != nil{
		fmt.Println("Open Error : ",err)
		return
	}
	defer file.Close() //及时关闭
	str := "Hello World!\r\n" //\r\n表示换行，\r是防止记事本不识别\n
	writer := bufio.NewWriter(file)
	for i:=0;i<5;i++{
		writer.WriteString(str)
	} 
	//因为writer是带 缓存 的，所以其实内容还没写入磁盘！需要通过 flush 将 缓存的数据 真正写入磁盘；否则会丢失数据
	writer.Flush()
}


/*打开文件的几种模式，可组合使用
const (
    O_RDONLY int = syscall.O_RDONLY // 只读模式打开文件
    O_WRONLY int = syscall.O_WRONLY // 只写模式打开文件
    O_RDWR   int = syscall.O_RDWR   // 读写模式打开文件
    O_APPEND int = syscall.O_APPEND // 写操作时将数据附加到文件尾部
    O_CREATE int = syscall.O_CREAT  // 如果不存在将创建一个新文件
    O_EXCL   int = syscall.O_EXCL   // 和O_CREATE配合使用，文件必须不存在
    O_SYNC   int = syscall.O_SYNC   // 打开文件用于同步I/O
    O_TRUNC  int = syscall.O_TRUNC  // 如果可能，打开时清空文件
)
*/